home *** CD-ROM | disk | FTP | other *** search
/ Cre@te Online 2000 December / Cre@teOnline CD05.iso / MacSoft / XML ConsoleMax.sea / XML ConsoleMax / Required / esc.jar / com / extensibility / app / BasicDialog.class (.txt) < prev    next >
Encoding:
Java Class File  |  2000-06-30  |  7.7 KB  |  333 lines

  1. package com.extensibility.app;
  2.  
  3. import com.extensibility.rock.AutoCompleteDocument;
  4. import com.extensibility.rock.RDialog;
  5. import com.extensibility.rock.Screen;
  6. import java.awt.Container;
  7. import java.awt.Dialog;
  8. import java.awt.Dimension;
  9. import java.awt.FlowLayout;
  10. import java.awt.Font;
  11. import java.awt.Frame;
  12. import java.awt.GridBagConstraints;
  13. import java.awt.GridBagLayout;
  14. import java.awt.Insets;
  15. import java.awt.Window;
  16. import java.util.Enumeration;
  17. import javax.swing.AbstractButton;
  18. import javax.swing.Box;
  19. import javax.swing.ButtonGroup;
  20. import javax.swing.Icon;
  21. import javax.swing.JButton;
  22. import javax.swing.JCheckBox;
  23. import javax.swing.JComponent;
  24. import javax.swing.JDialog;
  25. import javax.swing.JLabel;
  26. import javax.swing.JPanel;
  27. import javax.swing.JRadioButton;
  28. import javax.swing.JScrollPane;
  29. import javax.swing.JTextArea;
  30. import javax.swing.JTextField;
  31. import javax.swing.text.JTextComponent;
  32.  
  33. public class BasicDialog extends RDialog {
  34.    JLabel art;
  35.    JTextArea message = UI.createTextArea(false);
  36.    Object[] options;
  37.    JLabel[] label;
  38.    JButton[] button;
  39.    public int dismissalBtn = -1;
  40.  
  41.    public BasicDialog(Frame var1, String var2, Icon var3, String var4, Object[] var5, Object[] var6, String[] var7) {
  42.       super(var1, true);
  43.       ((Dialog)this).setTitle(var2);
  44.       this.prepare(var3, var4, var5, var6, var7);
  45.    }
  46.  
  47.    protected int getTextFieldCount() {
  48.       int var1 = 0;
  49.  
  50.       for(int var2 = 0; var2 < this.options.length; ++var2) {
  51.          if (this.options[var2] instanceof JTextField) {
  52.             ++var1;
  53.          }
  54.       }
  55.  
  56.       return var1;
  57.    }
  58.  
  59.    protected JTextField getTextField(int var1) {
  60.       for(int var2 = 0; var2 < this.options.length; ++var2) {
  61.          if (this.options[var2] instanceof JTextField && var1-- == 0) {
  62.             return (JTextField)this.options[var2];
  63.          }
  64.       }
  65.  
  66.       return null;
  67.    }
  68.  
  69.    protected JCheckBox getCheckBox(int var1) {
  70.       for(int var2 = 0; var2 < this.options.length; ++var2) {
  71.          if (this.options[var2] instanceof JCheckBox && var1-- == 0) {
  72.             return (JCheckBox)this.options[var2];
  73.          }
  74.       }
  75.  
  76.       return null;
  77.    }
  78.  
  79.    protected ButtonGroup getRadioGroup(int var1) {
  80.       for(int var2 = 0; var2 < this.options.length; ++var2) {
  81.          if (this.options[var2] instanceof ButtonGroup && var1-- == 0) {
  82.             return (ButtonGroup)this.options[var2];
  83.          }
  84.       }
  85.  
  86.       return null;
  87.    }
  88.  
  89.    protected JRadioButton getRadioButton(int var1, int var2) {
  90.       ButtonGroup var3 = this.getRadioGroup(var1);
  91.       JRadioButton var4 = null;
  92.  
  93.       for(Enumeration var5 = var3.getElements(); var2-- >= 0; var4 = (JRadioButton)var5.nextElement()) {
  94.       }
  95.  
  96.       return var4;
  97.    }
  98.  
  99.    public String getField(int var1) {
  100.       return this.getTextField(var1).getText();
  101.    }
  102.  
  103.    public void setButtonEnable(int var1, boolean var2) {
  104.       JButton var3 = this.button[var1];
  105.       ((AbstractButton)var3).setEnabled(var2);
  106.    }
  107.  
  108.    public void setAutoComplete(int var1, Enumeration var2) {
  109.       JTextField var3 = this.getTextField(var1);
  110.       AutoCompleteDocument var4 = new AutoCompleteDocument(var3, var2);
  111.       String var5 = ((JTextComponent)var3).getText();
  112.       ((JTextComponent)var3).setDocument(var4);
  113.       ((JTextComponent)var3).setText(var5);
  114.    }
  115.  
  116.    public boolean getCheck(int var1) {
  117.       return this.getCheckBox(var1).isSelected();
  118.    }
  119.  
  120.    public boolean getRadio(int var1, int var2) {
  121.       return this.getRadioButton(var1, var2).isSelected();
  122.    }
  123.  
  124.    public int getDismissalButton() {
  125.       return this.dismissalBtn;
  126.    }
  127.  
  128.    protected int getOptionsLength() {
  129.       return this.options != null ? this.options.length : -1;
  130.    }
  131.  
  132.    protected int getOptionsGridHeight() {
  133.       int var1 = 0;
  134.  
  135.       for(int var2 = 0; var2 < this.options.length; ++var2) {
  136.          if (this.options[var2] instanceof JCheckBox) {
  137.             ++var1;
  138.          } else if (this.options[var2] instanceof ButtonGroup) {
  139.             ++var1;
  140.          } else if (this.options[var2] instanceof JTextField) {
  141.             var1 += 2;
  142.          }
  143.       }
  144.  
  145.       return var1;
  146.    }
  147.  
  148.    protected void prepare(Icon var1, String var2, Object[] var3, Object[] var4, String[] var5) {
  149.       Font var6 = (new JLabel()).getFont();
  150.       int var7 = var3.length;
  151.       this.label = new JLabel[var7];
  152.  
  153.       for(int var8 = 0; var8 < var7; ++var8) {
  154.          if (var3[var8] instanceof String) {
  155.             this.label[var8] = new JLabel((String)var3[var8]);
  156.          } else if (var3[var8] instanceof String[]) {
  157.             this.label[var8] = new JLabel(((String[])var3[var8])[0]);
  158.          }
  159.       }
  160.  
  161.       this.options = new Object[var7];
  162.  
  163.       for(int var9 = 0; var9 < var7; ++var9) {
  164.          if (var4[var9] instanceof Boolean) {
  165.             this.options[var9] = new JCheckBox((String)var3[var9]);
  166.             if ((Boolean)var4[var9]) {
  167.                ((JCheckBox)this.options[var9]).setSelected(true);
  168.             }
  169.          } else if (!(var4[var9] instanceof Integer)) {
  170.             if (var4[var9] instanceof String) {
  171.                this.options[var9] = UI.createTextField((String)var4[var9]);
  172.             } else if (var4[var9] == null) {
  173.                this.options[var9] = UI.createTextField();
  174.             }
  175.          } else {
  176.             ButtonGroup var10 = new ButtonGroup();
  177.             String[] var11 = (String[])var3[var9];
  178.  
  179.             for(int var12 = 1; var12 < var11.length; ++var12) {
  180.                JRadioButton var13 = new JRadioButton(var11[var12]);
  181.                var10.add(var13);
  182.                if ((Integer)var4[var9] == var12 - 1) {
  183.                   ((AbstractButton)var13).setSelected(true);
  184.                }
  185.             }
  186.  
  187.             this.options[var9] = var10;
  188.          }
  189.       }
  190.  
  191.       int var18 = var5.length;
  192.  
  193.       while(var18 > 0) {
  194.          --var18;
  195.          if (var5[var18] != null) {
  196.             break;
  197.          }
  198.       }
  199.  
  200.       ++var18;
  201.       this.button = new JButton[var18];
  202.  
  203.       for(int var20 = 0; var20 < var18; ++var20) {
  204.          this.button[var20] = new JButton(var5[var20]);
  205.          this.button[var20].addActionListener(new 1(var20, this));
  206.          this.button[var20].setMnemonic(var5[var20].charAt(0));
  207.       }
  208.  
  209.       this.art = new JLabel(var1);
  210.       this.message.setFont(var6);
  211.       this.message.setBackground(((JDialog)this).getContentPane().getBackground());
  212.       this.message.setText(var2);
  213.       boolean var21 = this.message.getText().length() > 0;
  214.       ((JDialog)this).getContentPane().setLayout(new GridBagLayout());
  215.       GridBagConstraints var22 = new GridBagConstraints();
  216.       var22.insets = new Insets(16, 16, 0, 4);
  217.       var22.gridx = 0;
  218.       var22.gridy = 0;
  219.       var22.gridheight = this.getOptionsGridHeight() + (var21 ? 1 : 0);
  220.       var22.anchor = 18;
  221.       ((JDialog)this).getContentPane().add(this.art, var22);
  222.       var22.insets = new Insets(20, 16, 0, 16);
  223.       var22.gridx = 1;
  224.       var22.gridheight = 1;
  225.       var22.fill = 1;
  226.       var22.weightx = (double)1.0F;
  227.       var22.weighty = (double)1.0F;
  228.       if (!var21) {
  229.          var22.gridy = -1;
  230.       } else if (this.message.getText().length() > 384) {
  231.          this.message.setMargin(new Insets(4, 4, 4, 4));
  232.          JScrollPane var14 = new JScrollPane(this.message);
  233.          ((JComponent)var14).setPreferredSize(new Dimension(360, 200));
  234.          ((JDialog)this).getContentPane().add(var14, var22);
  235.       } else {
  236.          this.message.setSize(260, 360);
  237.          ((JDialog)this).getContentPane().add(this.message, var22);
  238.       }
  239.  
  240.       var22.weightx = (double)0.0F;
  241.       var22.weighty = (double)0.0F;
  242.       var22.fill = 0;
  243.       var22.insets = new Insets(var21 ? 8 : 20, 16, 0, 16);
  244.  
  245.       for(int var23 = 0; var23 < var7; ++var23) {
  246.          if (this.options[var23] instanceof JTextField) {
  247.             ++var22.gridy;
  248.             ((JDialog)this).getContentPane().add(this.label[var23], var22);
  249.             ++var22.gridy;
  250.             var22.insets.top = 2;
  251.             var22.fill = 2;
  252.             ((JDialog)this).getContentPane().add((JTextField)this.options[var23], var22);
  253.             var22.fill = 0;
  254.             var22.insets.top = 8;
  255.          } else if (!(this.options[var23] instanceof ButtonGroup)) {
  256.             if (this.options[var23] instanceof JCheckBox) {
  257.                ++var22.gridy;
  258.                ((JDialog)this).getContentPane().add((JCheckBox)this.options[var23], var22);
  259.             }
  260.          } else {
  261.             ++var22.gridy;
  262.             Box var15 = Box.createHorizontalBox();
  263.             this.label[var23].setAlignmentY(0.5F);
  264.             ((Container)var15).add(this.label[var23]);
  265.             ((Container)var15).add(Box.createHorizontalStrut(8));
  266.             Enumeration var16 = ((ButtonGroup)this.options[var23]).getElements();
  267.  
  268.             while(var16.hasMoreElements()) {
  269.                AbstractButton var17 = (AbstractButton)var16.nextElement();
  270.                ((JComponent)var17).setAlignmentY(0.5F);
  271.                ((Container)var15).add(var17);
  272.             }
  273.  
  274.             ((JDialog)this).getContentPane().add(var15, var22);
  275.          }
  276.  
  277.          var22.insets.top = 8;
  278.       }
  279.  
  280.       JPanel var24 = new JPanel(new FlowLayout(1, 16, 0));
  281.  
  282.       for(int var25 = 0; var25 < this.button.length; ++var25) {
  283.          ((Container)var24).add(this.button[var25]);
  284.       }
  285.  
  286.       ++var22.gridy;
  287.       var22.anchor = 10;
  288.       var22.insets.top = 16;
  289.       var22.insets.bottom = 8;
  290.       ((JDialog)this).getContentPane().add(var24, var22);
  291.       ((Window)this).pack();
  292.       Screen.centerInScreen(this);
  293.    }
  294.  
  295.    protected void doButton(int var1) {
  296.       this.dismissalBtn = var1;
  297.       ((Window)this).dispose();
  298.    }
  299.  
  300.    protected void setCheck(int var1) {
  301.       if (this.options[var1] instanceof JCheckBox) {
  302.          ((JCheckBox)this.options[var1]).setSelected(true);
  303.       }
  304.  
  305.    }
  306.  
  307.    public void addNotify() {
  308.       super.addNotify();
  309.       if (this.options.length == 0) {
  310.          this.button[0].requestFocus();
  311.       } else if (this.options[0] instanceof JComponent) {
  312.          ((JComponent)this.options[0]).requestFocus();
  313.       } else if (this.options[0] instanceof ButtonGroup) {
  314.          this.getRadioButton(0, 0).requestFocus();
  315.       } else {
  316.          ((JDialog)this).getRootPane().requestFocus();
  317.       }
  318.  
  319.       ((RDialog)this).installEscape(this.button[this.button.length - 1]);
  320.       ((RDialog)this).installDefault(this.button[0]);
  321.       int var1 = this.getTextFieldCount();
  322.  
  323.       while(true) {
  324.          --var1;
  325.          if (var1 < 0) {
  326.             return;
  327.          }
  328.  
  329.          ((RDialog)this).installDefault(this.getTextField(var1));
  330.       }
  331.    }
  332. }
  333.